<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>事件处理</title>
    </head>
    <body>
        <!-- 准备好DOM容器 -->
        <div id="test"></div>

        <!-- 必须按照顺序引入JS -->
        <!-- 引入React核心库 -->
        <script src="../js/react.development.js"></script>
        <!-- 引入react-dom库，用于操作DOM -->
        <script src="../js/react-dom.development.js"></script>
        <!-- 引入babel，用于将JSX翻译为JS -->
        <script src="../js/babel.min.js"></script>

        <!-- type必须为text/babel，代表里面的内容为JSX -->
        <script type="text/babel">
            class Demo extends React.Component {
                /**
                 * 1. 通过onXxx属性指定事件处理函数(注意大小写)
                 *  1) React使用的是自定义(合成)事件, 而不是使用的原生DOM事件 —— 为了更好的兼容性
                 *  2) React中的事件是通过事件委托方式处理的(委托给组件最外层的元素) —— 为了更高效
                 * 2. 通过event.target得到发生事件的DOM元素对象 —— 不要过度使用ref
                 */

                // 创建ref容器
                myRef = React.createRef();

                // 展示左侧输入框的数据
                showData = () => {
                    console.log(this.myRef);

                    const { current } = this.myRef;
                    alert(current.value);
                };

                // 展示右侧输入框的数据，使用event.target代替ref
                showData2 = (event) => {
                    alert(event.target.value);
                };

                render() {
                    return (
                        <div>
                            <input
                                ref={this.myRef}
                                type="text"
                                placeholder="点击按钮提示数据"
                            />
                            &nbsp;
                            <button onClick={this.showData}>
                                点我提示左侧数据
                            </button>
                            &nbsp;
                            <input
                                type="text"
                                placeholder="失去焦点提示数据"
                                onBlur={this.showData2}
                            />
                        </div>
                    );
                }
            }

            ReactDOM.render(<Demo />, document.getElementById("test"));
        </script>
    </body>
</html>
